/*
 * @Author: yanyufengqing 1624478125@qq.com
 * @Date: 2025-10-03 16:56:58
 * @LastEditors: yanyufengqing 1624478125@qq.com
 * @LastEditTime: 2025-10-03 17:02:54
 * @FilePath: \manage-system\src\utils\index.ts
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
/**
 * 设置CSS自定义属性（CSS变量）
 * @param prop CSS属性名（如 '--primary-color'）
 * @param val 属性值
 * @param dom 目标DOM元素，默认为文档根元素
 */
export const setProperty = (prop: string, val: any, dom = document.documentElement) => {
  dom.style.setProperty(prop, val);
};

/**
 * 混合两种颜色，生成中间色
 * @param color1 第一种颜色（十六进制格式，如 '#ff0000'）
 * @param color2 第二种颜色（十六进制格式，如 '#0000ff'）
 * @param weight 颜色1的权重（0-1之间，默认0.5）
 * @returns 混合后的十六进制颜色字符串
 */
export const mix = (color1: string, color2: string, weight: number = 0.5): string => {
  let color = '#';
  // 分别处理RGB三个通道（红色、绿色、蓝色）
  for (let i = 0; i < 2; i++) {
    // 提取颜色1的当前通道值（十六进制转十进制）
    const c1 = parseInt(color1.substring(1 + i * 2, 3 + i * 2), 16);
    // 提取颜色2的当前通道值（十六进制转十进制）
    const c2 = parseInt(color2.substring(1 + i * 2, 3 + i * 2), 16);
    // 按权重计算混合后的通道值（线性插值）
    const c = Math.round(c1 * weight + c2 * (1 - weight));
    // 将结果转回十六进制并确保两位长度
    color += c.toString(16).padStart(2, '0');
  }
  return color;
};
